<?php
//   +----------------------------------------------------------------------
//   | Copyright (c) 2015-2025 http://www.hdphp.cn All rights reserved.
//   | Licensed ( http://www.hdphp.cn/licenses/ )
//   | Author: Jack <sophia2152@qq.com>
//   | 官方网址: http://www.hdphp.cn
//   | 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用。
//   | 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
//   +----------------------------------------------------------------------
namespace hdphp\command;

use app\common\services\system\admin\SystemAdminServices;
use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;

/**
 * Class：重置管理员密码
 * 创建人：Jack
 * 创建时间：2024/1/11 17:16
 * @package app\command
 */
class ResetAdminPwd extends Command
{
    protected function configure()
    {
        // 指令配置
        $this->setName('reset:password')
            ->addArgument('root', Argument::OPTIONAL, '管理员账号', 'admin')
            ->addOption('pwd', null, Option::VALUE_REQUIRED, '重置密码', '123456')
            ->setDescription('the update resetPwd command');
    }

    /**
     * 注释：execute
     * 创建人：Jack
     * 创建时间：2024/1/11 17:18
     * @param Input  $input
     * @param Output $output
     * @return void
     */
    protected function execute(Input $input, Output $output)
    {
        $account = $input->getArgument('root');
        if ($input->hasOption('pwd')) {
            $pwd = $input->getOption('pwd');
        }
        /** @var SystemAdminServices $systemAdminServices */
        $systemAdminServices = app()->make(SystemAdminServices::class);
        $admin = $systemAdminServices->get(['username' => $account, 'status' => 1, 'is_delete' => 0]);
        if (!$admin) {
            $output->warning('管理员账号不存在');
        } else {
            $factor = substr(random_string('md5'), 0, 6);
            $admin->factor = $factor;
            $admin->password = md5(md5($pwd) . $factor);
            $admin->save();
            $output->info('账号：' . $account . '；密码已重置:' . $pwd);
        }
    }
}